package com.snda.sc.store;

import redis.clients.jedis.Jedis;

/**
 * Redis储存服务。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">李曦</a><br/>
 *         Created at: 2012-9-28 上午10:44:40
 */
public interface IRedisStore {

	/**
	 * 获取一个Redis连接
	 * 
	 * @return
	 */
	Jedis getConnection();

	/**
	 * 返还使用完毕的Redis连接
	 * 
	 * @param jedis
	 */
	void returnConnection(Jedis jedis);

	/**
	 * 查看Redis是否存在指定的key
	 * 
	 * @param key
	 * @return
	 */
	boolean exists(String key);

	/**
	 * 获取与key关联的value值
	 * 
	 * @param key
	 * @return
	 */
	String get(String key);

	/**
	 * 保存key-value键值对
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	String set(String key, String value);

	/**
	 * 保存token信息，并在#{redis.json codeExpire}秒后超时，自动删除
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	String setCodeExpire(String key, String value);

	/**
	 * 保存HPS信息，并在#{redis.json hpsExpire}秒后超时，自动删除
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	String setHpsExpire(String key, String value);

	/**
	 * 保存key-value键值对，并在seconds秒后超时，自动删除
	 * 
	 * @param key
	 * @param seconds
	 * @param value
	 * @return
	 */
	String setExpire(String key, int seconds, String value);

	/**
	 * 查看key还有多长时间超时
	 * 
	 * @param key
	 * @return
	 */
	long ttl(String key);

	/**
	 * 根据key删除数据
	 * 
	 * @param key
	 * @return
	 */
	long del(String key);

	/**
	 * 获取Redis中数据的条数
	 * 
	 * @return
	 */
	long size();
}
